/**
 * 来源: https://blog.csdn.net/Leytton/article/details/103745169
 */

// Accents 强调
export const katexAccents = [
    `a'`,
    `\\tilde{a}`,
    `\\mathring{g}`,
    `a''`,
    `\\widetilde{ac}`,
    `\\overgroup{AB}`,
    `a^{\\prime}`,
    `\\utilde{AB}`,
    `\\undergroup{AB}`,
    `\\acute{a}`,
    `\\vec{F}`,
    `\\Overrightarrow{AB}`,
    `\\bar{y}`,
    `\\overleftarrow{AB}`,
    `\\overrightarrow{AB}`,
    `\\breve{a}`,
    `\\underleftarrow{AB}`,
    `\\underrightarrow{AB}`,
    `\\check{a}`,
    `\\overleftharpoon{ac}`,
    `\\overrightharpoon{ac}`,
    `\\dot{a}`,
    `\\overleftrightarrow{AB}`,
    `\\overbrace{AB}`,
    `\\ddot{a}`,
    `\\underleftrightarrow{AB}`,
    `\\underbrace{AB}`,
    `\\grave{a}`,
    `\\overline{AB}`,
    `\\overlinesegment{AB}`,
    `\\hat{\\theta}`,
    `\\underline{AB}`,
    `\\underlinesegment{AB}`,
    `\\widehat{ac}`,
    `\\widecheck{ac}`,
    `\\'{a}`,
    `\\~{a}`,
    `\\.{a}`,
    `\\H{a}`,
    `\`{a}`,
    `\\={a}`,
    `\\"{a}`,
    `\\v{a}`,
    `\\^{a}`,
    `\\u{a}`,
    `\\r{a}`,
]

// Delimiters 分隔符
export const katexDelimiters = [
    `( )`,
    `\\lparen`,
    `\\rparen`,
    `⌈ ⌉`,
    `\\lceil`,
    `\\rceil`,
    `\\uparrow`,
    `[ ]`,
    `\\lbrack`,
    `\\rbrack`,
    `⌊ ⌋`,
    `\\lfloor`,
    `\\rfloor`,
    `\\downarrow`,
    `\\{ \\}`,
    `\\lbrace`,
    `\\rbrace`,
    `⎰⎱`,
    `\\lmoustache`,
    `\\rmoustache`,
    `\\updownarrow`,
    `⟨ ⟩`,
    `\\langle`,
    `\\rangle`,
    `⟮ ⟯`,
    `\\lgroup`,
    `\\rgroup`,
    `\\Uparrow`,
    `|`,
    `\\vert`,
    `┌ ┐`,
    `\\ulcorner`,
    `\\urcorner`,
    `\\Downarrow`,
    `\\|`,
    `\\Vert`,
    `└ ┘`,
    `\\llcorner`,
    `\\lrcorner`,
    `\\Updownarrow`,
    `\\lvert`,
    `\\rvert`,
    `\\lVert`,
    `\\rVert`,
    `\\backslash`,
    `\\lang`,
    `\\rang`,
    `\\lt \\gt`,
    `\\llbracket \\rrbracket`,
    `\\lBrace \\rBrace`,
    `\\left(\\LARGE{AB}\\right)`,
    `( \\big( \\Big( \\bigg( \\Bigg(`,
]

// Environments 环境
export const katexEnvironments = [
    `\\begin{matrix}
a & b \\\\
c & d
\\end{matrix}`,
    `\\begin{array}{cc}
a & b \\\\
c & d
\\end{array}`,
    `\\begin{pmatrix}
a & b \\\\
c & d
\\end{pmatrix}`,
    `\\begin{bmatrix}
a & b \\\\
c & d
\\end{bmatrix}`,
    `\\begin{vmatrix}
a & b \\\\
c & d
\\end{vmatrix}`,
    `\\begin{Vmatrix}
a & b \\\\
c & d
\\end{Vmatrix}`,
    `\\begin{Bmatrix}
a & b \\\\
c & d
\\end{Bmatrix}`,
    `\\def\\arraystretch{1.5}
\\begin{array}{c:c:c}
a & b & c \\\\ \\hline
d & e & f \\\\
\\hdashline
g & h & i
\\end{array}`,
    `\\begin{aligned}
a&=b+c \\\\
d+e&=f
\\end{aligned}`,
    `\\begin{alignedat}{2}
10&x+ &3&y = 2 \\\\
3&x+&13&y = 4
\\end{alignedat}`,
    `\\begin{gathered}
a=b \\\\
e=b+c
\\end{gathered}`,
    `x = \\begin{cases}
a &\\text{if } b \\\\
c &\\text{if } d
\\end{cases}`,
    `\\begin{smallmatrix}
a & b \\\\
c & d
\\end{smallmatrix}`,
    `\\begin{rcases}
a &\\text{if } b \\\\
c &\\text{if } d
\\end{rcases}⇒…`
]

// HTML
// FIXME 目前 katex 和 HTML 还不兼容
export const katexHTML = [
    `\\href{https://katex.org/}{\\KaTeX}`,
    `\\url{https://katex.org/}`,
    `\\includegraphics[height=0.8em, totalheight=0.9em, width=0.9em, alt=KA logo]{https://katex.org/img/khan-academy.png}`,
    `\\htmlId{bar}{x}`,
    `\\htmlClass{foo}{x}`,
    `\\htmlStyle{color: red;}{x}`,
    `\\htmlData{foo=a, bar=b}{x}`
]

// Greek Letters 希腊字母
export const katexGreekLetters = [
    `\\Alpha`,
    `\\Beta`,
    `\\Gamma`,
    `\\Delta`,
    `\\Epsilon`,
    `\\Zeta`,
    `\\Eta`,
    `\\Theta`,
    `\\Iota`,
    `\\Kappa`,
    `\\Lambda`,
    `\\Mu`,
    `\\Nu`,
    `\\Xi`,
    `\\Omicron`,
    `\\Pi`,
    `\\Rho`,
    `\\Sigma`,
    `\\Tau`,
    `\\Upsilon`,
    `\\Phi`,
    `\\Chi`,
    `\\Psi`,
    `\\Omega`,
    `\\varGamma`,
    `\\varDelta`,
    `\\varTheta`,
    `\\varLambda`,
    `\\varXi`,
    `\\varPi`,
    `\\varSigma`,
    `\\varUpsilon`,
    `\\varPhi`,
    `\\varPsi`,
    `\\varOmega`,
    `\\alpha`,
    `\\beta`,
    `\\gamma`,
    `\\delta`,
    `\\epsilon`,
    `\\zeta`,
    `\\eta`,
    `\\theta`,
    `\\iota`,
    `\\kappa`,
    `\\lambda`,
    `\\mu`,
    `\\nu`,
    `\\xi`,
    `\\omicron`,
    `\\pi`,
    `\\rho`,
    `\\sigma`,
    `\\tau`,
    `\\upsilon`,
    `\\phi`,
    `\\chi`,
    `\\psi`,
    `\\omega`,
    `\\varepsilon`,
    `\\varkappa`,
    `\\vartheta`,
    `\\thetasym`,
    `\\varpi`,
    `\\varrho`,
    `\\varsigma`,
    `\\varphi`,
    `\\digamma`,
]

// Other Letters 其他字母
export const katexOtherLetters = [
    `\\imath`,
    `\\nabla`,
    `\\Im`,
    `\\Reals`,
    `\\text{\\OE}`,
    `\\jmath`,
    `\\partial`,
    `\\image`,
    `\\wp`,
    `\\text{\\o}`,
    `\\aleph`,
    `\\Game`,
    `\\Bbbk`,
    `\\weierp`,
    `\\text{\\O}`,
    `\\alef`,
    `\\Finv`,
    `\\N`,
    `\\Z`,
    `\\text{\\ss}`,
    `\\alefsym`,
    `\\cnums`,
    `\\natnums`,
    `\\text{\\aa}`,
    `\\text{\\i}`,
    `\\beth`,
    `\\Complex`,
    `\\R`,
    `\\text{\\AA}`,
    `\\text{\\j}`,
    `\\gimel`,
    `\\ell`,
    `\\Re`,
    `\\text{\\ae}`,
    `\\daleth`,
    `\\hbar`,
    `\\real`,
    `\\text{\\AE}`,
    `\\eth`,
    `\\hslash`,
    `\\reals`,
    `\\text{\\oe}`
]

// Symbols and Punctuation 符号和标点符号
export const katexPunctuation = [
    `% comment`,
    `\\dots`,
    `\\KaTeX`,
    `\\%`,
    `\\cdots`,
    `\\LaTeX`,
    `\\#`,
    `\\ddots`,
    `\\TeX`,
    `\\&`,
    `\\ldots`,
    `\\nabla`,
    `\\_`,
    `\\vdots`,
    `\\infty`,
    `\\text{\\textunderscore}`,
    `\\dotsb`,
    `\\infin`,
    `\\text{--}`,
    `\\dotsc`,
    `\\checkmark`,
    `\\text{\\textendash}`,
    `\\dotsi`,
    `\\dag`,
    `\\text{---}`,
    `\\dotsm`,
    `\\dagger`,
    `\\text{\\textemdash}`,
    `\\dotso`,
    `\\text{\\textdagger}`,
    `\\text{\\textasciitilde}`,
    `\\sdot`,
    `\\ddag`,
    `\\text{\\textasciicircum}`,
    `\\mathellipsis`,
    `\\ddagger`,
    `\``,
    `\\text{\\textellipsis}`,
    `\\text{\\textdaggerdbl}`,
    `\\text{\\textquoteleft}`,
    `\\Box`,
    `\\Dagger`,
    `\\lq`,
    `\\square`,
    `\\angle`,
    `\\text{\\textquoteright}`,
    `\\blacksquare`,
    `\\measuredangle`,
    `\\rq`,
    `\\triangle`,
    `\\sphericalangle`,
    `\\text{\\textquotedblleft}`,
    `\\triangledown`,
    `\\top`,
    `"`,
    `\\triangleleft`,
    `\\bot`,
    `\\text{\\textquotedblright}`,
    `\\triangleright`,
    `\\colon`,
    `\\bigtriangledown`,
    `\\text{\\textdollar}`,
    `\\backprime`,
    `\\bigtriangleup`,
    `\\pounds`,
    `\\prime`,
    `\\blacktriangle`,
    `\\mathsterling`,
    `\\text{\\textless}`,
    `\\blacktriangledown`,
    `\\text{\\textsterling}`,
    `\\text{\\textgreater}`,
    `\\blacktriangleleft`,
    `\\yen`,
    `\\text{\\textbar}`,
    `\\blacktriangleright`,
    `\\surd`,
    `\\text{\\textbardbl}`,
    `\\diamond`,
    `\\degree`,
    `\\text{\\textbraceleft}`,
    `\\Diamond`,
    `\\text{\\textdegree}`,
    `\\text{\\textbraceright}`,
    `\\lozenge`,
    `\\mho`,
    `\\text{\\textbackslash}`,
    `\\blacklozenge`,
    `\\diagdown`,
    `\\text{\\P}`,
    `\\star`,
    `\\diagup`,
    `\\text{\\S}`,
    `\\bigstar`,
    `\\flat`,
    `\\text{\\sect}`,
    `\\clubsuit`,
    `\\natural`,
    `\\copyright`,
    `\\clubs`,
    `\\sharp`,
    `\\circledR`,
    `\\diamondsuit`,
    `\\heartsuit`,
    `\\text{\\textregistered}`,
    `\\diamonds`,
    `\\hearts`,
    `\\circledS`,
    `\\spadesuit`,
    `\\spades`,
    `\\text{\\textcircled a}`,
    `\\maltese`,
]

// Annotation 注释
export const katexAnnotation = [
    `\\cancel{5}`,
    `\\overbrace{a+b+c}^{\\text{note}}`,
    `\\bcancel{5}`,
    `\\underbrace{a+b+c}_{\\text{note}}`,
    `\\xcancel{ABC}`,
    `\\not =`,
    `\\sout{abc}`,
    `\\boxed{\\pi=\\frac c d}`,
]

// Vertical Layout 垂直布局
export const katexVerticalLayout = [
    `x_n`,
    `\\stackrel{!}{=}`,
    `a \\atop b`,
    `e^x`,
    `\\overset{!}{=}`,
    `a\\raisebox{0.25em}{b}c`,
    `_u^o`,
    `\\underset{!}{=}`,
    `\\sum\\limits_{0<i<m\\atop0<j<n}`
]

// Overlap and Spacing 重叠和间距
export const katexOverlapSpacing = [
    `{=}\\mathllap{/\\,}`,
    `\\left(x^{\\smash{2}}\\right)`,
    `\\mathrlap{\\,/}{=}`,
    `\\sqrt{\\smash[b]{y}}`,
]

// Spacing 间距
export const katexSpacing = [
    `\\,`,
    `\\kern{distance}`,
    `\\thinspace`,
    `\\mkern{distance}`,
    `\\>`,
    `\\mskip{distance}`,
    `\\:`,
    `\\hskip{distance}`,
    `\\medspace`,
    `\\hspace{distance}`,
    `\\;`,
    `\\hspace*{distance}`,
    `\\thickspace`,
    `\\phantom{content}`,
    `\\enspace`,
    `\\hphantom{content}`,
    `\\quad`,
    `\\vphantom{content}`,
    `\\qquad`,
    `\\!`,
    `~`,
    `\\negthinspace`,
    `\\<space>`,
    `\\negmedspace`,
    `\\nobreakspace`,
    `\\negthickspace`,
    `\\space`,
]

// Logic and Set Theory 逻辑与集合论
export const katexLogic = [
    `\\forall`,
    `\\complement`,
    `\\therefore`,
    `\\emptyset`,
    `\\exists`,
    `\\subset`,
    `\\because`,
    `\\empty`,
    `\\exist`,
    `\\supset`,
    `\\mapsto`,
    `\\varnothing`,
    `\\nexists`,
    `\\mid`,
    `\\to`,
    `\\implies`,
    `\\in`,
    `\\land`,
    `\\gets`,
    `\\impliedby`,
    `\\isin`,
    `\\lor`,
    `\\leftrightarrow`,
    `\\iff`,
    `\\notin`,
    `\\ni`,
    `\\notni`,
    `\\neg`,
    `\\lnot`,
]

// Macros 宏
export const katexMacros = [
    `\\def\\foo{x^2} \\foo + \\foo`,
    `\\gdef\\bar#1{#1^2} \\bar{y} + \\bar{y}`,
    `\\global\\def\\macroname#1#2…{definition}`,
    `\\newcommand\\macroname[numargs]{definition}`,
    `\\renewcommand\\macroname[numargs]{definition}`,
    `\\providecommand\\macroname[numargs]{definition}`,
]

// Big Operators 大运算符
export const katexBigOperators = [
    `\\sum`,
    `\\prod`,
    `\\bigotimes`,
    `\\bigvee`,
    `\\int`,
    `\\coprod`,
    `\\bigoplus`,
    `\\bigwedge`,
    `\\iint`,
    `\\intop`,
    `\\bigodot`,
    `\\bigcap`,
    `\\iiint`,
    `\\smallint`,
    `\\biguplus`,
    `\\bigcup`,
    `\\oint`,
    `\\oiint`,
    `\\oiiint`,
    `\\bigsqcup`,
]

// Binary Operators 二元运算符
export const katexBinaryOperators = [
    `+`,
    `\\cdot`,
    `\\gtrdot`,
    `x \\pmod a`,
    `-`,
    `\\cdotp`,
    `\\intercal`,
    `x \\pod a`,
    `/`,
    `\\centerdot`,
    `\\land`,
    `\\rhd`,
    `*`,
    `\\circ`,
    `\\leftthreetimes`,
    `\\rightthreetimes`,
    `\\amalg`,
    `\\circledast`,
    `\\ldotp`,
    `\\rtimes`,
    `\\And`,
    `\\circledcirc`,
    `\\lor`,
    `\\setminus`,
    `\\ast`,
    `\\circleddash`,
    `\\lessdot`,
    `\\smallsetminus`,
    `\\barwedge`,
    `\\Cup`,
    `\\lhd`,
    `\\sqcap`,
    `\\bigcirc`,
    `\\cup`,
    `\\ltimes`,
    `\\sqcup`,
    `\\bmod`,
    `\\curlyvee`,
    `x\\mod a`,
    `\\times`,
    `\\boxdot`,
    `\\curlywedge`,
    `\\mp`,
    `\\unlhd`,
    `\\boxminus`,
    `\\div`,
    `\\odot`,
    `\\unrhd`,
    `\\boxplus`,
    `\\divideontimes`,
    `\\ominus`,
    `\\uplus`,
    `\\boxtimes`,
    `\\dotplus`,
    `\\oplus`,
    `\\vee`,
    `\\bullet`,
    `\\doublebarwedge`,
    `\\otimes`,
    `\\veebar`,
    `\\Cap`,
    `\\doublecap`,
    `\\oslash`,
    `\\wedge`,
    `\\cap`,
    `\\doublecup`,
    `\\pm`,
    `\\plusmn`,
    `\\wr`,
]

// Fractions and Binomials 分数和二项式
export const katexFractionsBinomials = [
    `\\frac{a}{b}`,
    `\\tfrac{a}{b}`,
    `\\genfrac ( ] {2pt}{1}a{a+1}`,
    `{a \\over b}`,
    `\\dfrac{a}{b}`,
    `{a \\above{2pt} b+1}`,
    `a/b`,
    `\\cfrac{a}{1 + \\cfrac{1}{b}}`,
    `\\binom{n}{k}`,
    `\\dbinom{n}{k}`,
    `{n\\brace k}`,
    `{n \\choose k}`,
    `\\tbinom{n}{k}`,
    `{n\\brack k}`,
]

// Math Operators 数学运算符
export const katexMathOperators = [
    `\\arcsin`,
    `\\cotg`,
    `\\ln`,
    `\\det`,
    `\\arccos`,
    `\\coth`,
    `\\log`,
    `\\gcd`,
    `\\arctan`,
    `\\csc`,
    `\\sec`,
    `\\inf`,
    `\\arctg`,
    `\\ctg`,
    `\\sin`,
    `\\lim`,
    `\\arcctg`,
    `\\cth`,
    `\\sinh`,
    `\\liminf`,
    `\\arg`,
    `\\deg`,
    `\\sh`,
    `\\limsup`,
    `\\ch`,
    `\\dim`,
    `\\tan`,
    `\\max`,
    `\\cos`,
    `\\exp`,
    `\\tanh`,
    `\\min`,
    `\\cosec`,
    `\\hom`,
    `\\tg`,
    `\\Pr`,
    `\\cosh`,
    `\\ker`,
    `\\th`,
    `\\sup`,
    `\\cot`,
    `\\lg`,
    `\\argmax`,
    `\\argmin`,
    `\\plim`,
    `\\operatorname{f}`,
    `\\operatorname*{f}`,
    `\\lim\\limits_{N\\to+\\infty}`,
    `\\sqrt{x}`,
    `\\sqrt[3]{x}`,
]

// Relations 关系符
export const katexRelations = [
    `\\stackrel{!}{=}`,
    `=`,
    `\\eqcirc`,
    `\\lesseqgtr`,
    `\\sqsupset`,
    `<`,
    `\\eqcolon`,
    `\\lesseqqgtr`,
    `\\sqsupseteq`,
    `>`,
    `\\Eqcolon`,
    `\\lessgtr`,
    `\\Subset`,
    `:`,
    `\\eqqcolon`,
    `\\lesssim`,
    `\\subset`,
    `\\sub`,
    `\\approx`,
    `\\Eqqcolon`,
    `\\ll`,
    `\\subseteq`,
    `\\sube`,
    `\\approxeq`,
    `\\eqsim`,
    `\\lll`,
    `\\subseteqq`,
    `\\asymp`,
    `\\eqslantgtr`,
    `\\llless`,
    `\\succ`,
    `\\backepsilon`,
    `\\eqslantless`,
    `\\lt`,
    `\\succapprox`,
    `\\backsim`,
    `\\equiv`,
    `\\mid`,
    `\\succcurlyeq`,
    `\\backsimeq`,
    `\\fallingdotseq`,
    `\\models`,
    `\\succeq`,
    `\\between`,
    `\\frown`,
    `\\multimap`,
    `\\succsim`,
    `\\bowtie`,
    `\\ge`,
    `\\owns`,
    `\\Supset`,
    `\\bumpeq`,
    `\\geq`,
    `\\parallel`,
    `\\supset`,
    `\\Bumpeq`,
    `\\geqq`,
    `\\perp`,
    `\\supseteq`,
    `\\supe`,
    `\\circeq`,
    `\\geqslant`,
    `\\pitchfork`,
    `\\supseteqq`,
    `\\colonapprox`,
    `\\gg`,
    `\\prec`,
    `\\thickapprox`,
    `\\Colonapprox`,
    `\\ggg`,
    `\\precapprox`,
    `\\thicksim`,
    `\\coloneq`,
    `\\gggtr`,
    `\\preccurlyeq`,
    `\\trianglelefteq`,
    `\\Coloneq`,
    `\\gt`,
    `\\preceq`,
    `\\triangleq`,
    `\\coloneqq`,
    `\\gtrapprox`,
    `\\precsim`,
    `\\trianglerighteq`,
    `\\Coloneqq`,
    `\\gtreqless`,
    `\\propto`,
    `\\varpropto`,
    `\\colonsim`,
    `\\gtreqqless`,
    `\\risingdotseq`,
    `\\vartriangle`,
    `\\Colonsim`,
    `\\gtrless`,
    `\\shortmid`,
    `\\vartriangleleft`,
    `\\cong`,
    `\\gtrsim`,
    `\\shortparallel`,
    `\\vartriangleright`,
    `\\curlyeqprec`,
    `\\in`,
    `\\isin`,
    `\\sim`,
    `\\vcentcolon`,
    `\\curlyeqsucc`,
    `\\Join`,
    `\\simeq`,
    `\\vdash`,
    `\\dashv`,
    `\\le`,
    `\\smallfrown`,
    `\\vDash`,
    `\\dblcolon`,
    `\\leq`,
    `\\smallsmile`,
    `\\Vdash`,
    `\\doteq`,
    `\\leqq`,
    `\\smile`,
    `\\Vvdash`,
    `\\Doteq`,
    `\\leqslant`,
    `\\sqsubset`,
    `\\doteqdot`,
    `\\lessapprox`,
    `\\sqsubseteq`,
]

// Negated Relations 否定关系
export const katexNegatedRelations = [
    `\\not =`,
    `\\gnapprox`,
    `\\ngeqslant`,
    `\\nsubseteq`,
    `\\precneqq`,
    `\\gneq`,
    `\\ngtr`,
    `\\nsubseteqq`,
    `\\precnsim`,
    `\\gneqq`,
    `\\nleq`,
    `\\nsucc`,
    `\\subsetneq`,
    `\\gnsim`,
    `\\nleqq`,
    `\\nsucceq`,
    `\\subsetneqq`,
    `\\gvertneqq`,
    `\\nleqslant`,
    `\\nsupseteq`,
    `\\succnapprox`,
    `\\lnapprox`,
    `\\nless`,
    `\\nsupseteqq`,
    `\\succneqq`,
    `\\lneq`,
    `\\nmid`,
    `\\ntriangleleft`,
    `\\succnsim`,
    `\\lneqq`,
    `\\notin`,
    `\\ntrianglelefteq`,
    `\\supsetneq`,
    `\\lnsim`,
    `\\notni`,
    `\\ntriangleright`,
    `\\supsetneqq`,
    `\\lvertneqq`,
    `\\nparallel`,
    `\\ntrianglerighteq`,
    `\\varsubsetneq`,
    `\\ncong`,
    `\\nprec`,
    `\\nvdash`,
    `\\varsubsetneqq`,
    `\\ne`,
    `\\npreceq`,
    `\\nvDash`,
    `\\varsupsetneq`,
    `\\neq`,
    `\\nshortmid`,
    `\\nVDash`,
    `\\varsupsetneqq`,
    `\\ngeq`,
    `\\nshortparallel`,
    `\\nVdash`,
    `\\ngeqq`,
    `\\nsim`,
    `\\precnapprox`,
]

// Arrows 箭头
export const katexArrows = [
    `\\circlearrowleft`,
    `\\leftharpoonup`,
    `\\rArr`,
    `\\circlearrowright`,
    `\\leftleftarrows`,
    `\\rarr`,
    `\\curvearrowleft`,
    `\\leftrightarrow`,
    `\\restriction`,
    `\\curvearrowright`,
    `\\Leftrightarrow`,
    `\\rightarrow`,
    `\\Darr`,
    `\\leftrightarrows`,
    `\\Rightarrow`,
    `\\dArr`,
    `\\leftrightharpoons`,
    `\\rightarrowtail`,
    `\\darr`,
    `\\leftrightsquigarrow`,
    `\\rightharpoondown`,
    `\\dashleftarrow`,
    `\\Lleftarrow`,
    `\\rightharpoonup`,
    `\\dashrightarrow`,
    `\\longleftarrow`,
    `\\rightleftarrows`,
    `\\downarrow`,
    `\\Longleftarrow`,
    `\\rightleftharpoons`,
    `\\Downarrow`,
    `\\longleftrightarrow`,
    `\\rightrightarrows`,
    `\\downdownarrows`,
    `\\Longleftrightarrow`,
    `\\rightsquigarrow`,
    `\\downharpoonleft`,
    `\\longmapsto`,
    `\\Rrightarrow`,
    `\\downharpoonright`,
    `\\longrightarrow`,
    `\\Rsh`,
    `\\gets`,
    `\\Longrightarrow`,
    `\\searrow`,
    `\\Harr`,
    `\\looparrowleft`,
    `\\swarrow`,
    `\\hArr`,
    `\\looparrowright`,
    `\\to`,
    `\\harr`,
    `\\Lrarr`,
    `\\twoheadleftarrow`,
    `\\hookleftarrow`,
    `\\lrArr`,
    `\\twoheadrightarrow`,
    `\\hookrightarrow`,
    `\\lrarr`,
    `\\Uarr`,
    `\\iff`,
    `\\Lsh`,
    `\\uArr`,
    `\\impliedby`,
    `\\mapsto`,
    `\\uarr`,
    `\\implies`,
    `\\nearrow`,
    `\\uparrow`,
    `\\Larr`,
    `\\nleftarrow`,
    `\\Uparrow`,
    `\\lArr`,
    `\\nLeftarrow`,
    `\\updownarrow`,
    `\\larr`,
    `\\nleftrightarrow`,
    `\\Updownarrow`,
    `\\leadsto`,
    `\\nLeftrightarrow`,
    `\\upharpoonleft`,
    `\\leftarrow`,
    `\\nrightarrow`,
    `\\upharpoonright`,
    `\\Leftarrow`,
    `\\nRightarrow`,
    `\\upuparrows`,
    `\\leftarrowtail`,
    `\\nwarrow`,
    `\\leftharpoondown`,
    `\\Rarr`,
]

// Extensible Arrows 扩展箭头
export const katexExtensibleArrows = [
    `\\xleftarrow{abc}`,
    `\\xrightarrow[under]{over}`,
    `\\xLeftarrow{abc}`,
    `\\xRightarrow{abc}`,
    `\\xleftrightarrow{abc}`,
    `\\xLeftrightarrow{abc}`,
    `\\xhookleftarrow{abc}`,
    `\\xhookrightarrow{abc}`,
    `\\xtwoheadleftarrow{abc}`,
    `\\xtwoheadrightarrow{abc}`,
    `\\xleftharpoonup{abc}`,
    `\\xrightharpoonup{abc}`,
    `\\xleftharpoondown{abc}`,
    `\\xrightharpoondown{abc}`,
    `\\xleftrightharpoons{abc}`,
    `\\xrightleftharpoons{abc}`,
    `\\xtofrom{abc}`,
    `\\xmapsto{abc}`,
    `\\xlongequal{abc}`,
]

export const katexList = [
    katexAccents,
    katexDelimiters,
    katexEnvironments,
    // katexHTML,
    katexGreekLetters,
    katexOtherLetters,
    katexPunctuation,
    katexAnnotation,
    katexVerticalLayout,
    // katexOverlapSpacing,
    // katexSpacing,
    katexLogic,
    // katexMacros,
    katexBigOperators,
    katexBinaryOperators,
    katexFractionsBinomials,
    katexMathOperators,
    katexRelations,
    katexNegatedRelations,
    katexArrows,
    katexExtensibleArrows
]